import { useParams } from "react-router-dom"

// 从useLocation获取query/state/params参数(对象)
export function useGetParams(location) {
    const { pathname, search, state } = location

    // pathname 如果是query和State，原数据是/abc；如果是params，就是/abc/123/66。 需要返回 /abc
    const path = pathname.split("/")[1]

    // search 是query参数，原数据是 ?keyword=react，需要返回 {keyword: "react"}
    // state 是state参数，原数据是 {name: "张三"}，需要返回 {name: "张三"}

    // 如果search和state都为空，则说明是params传参
    let params = useParams() // 返回params参数

    // 如果search不为空，则返回query参数
    const queryArr = search?.split("?")[1] || []
    const query = {}
    if (queryArr?.length) {
        queryArr.split("&").forEach((item) => {
            const [key, value] = item.split("=")
            // 如果value是中文，则需要解码
            query[key] = decodeURIComponent(value)
        })
    }

    return { path, query, state, params }
}
